package com.deep.mybatis.v2.dao.impl;

import com.alibaba.druid.pool.DruidDataSource;
import com.dysf.dao.IUserDao;
import com.dysf.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @Description
 * @Author dysfzl
 * @Date 2022-01-09 15:21
 * @Copyright xx科技有限公司 Copyright (c)
 * @Version 1.0
 */
@Repository
public class UserDaoImpl implements IUserDao {

    private JdbcTemplate jdbcTemplate;

    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    /**
     * 在方法上自动注入 数据源
     *
     * @param dataSource
     */
    @Autowired
    public void setDataSource(DruidDataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    /**
     * 在方法上自动注入 数据源
     *
     * @param dataSource
     */
    @Autowired
    public void setDataSource2(DruidDataSource dataSource) {
        this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
    }

    /**
     * 插入一条数据
     *
     * @param user
     */
    @Override
    public void insert(User user) {
        String sql = "insert into t_user(name,cardno,balance) values(?,?,?)";
        int result = jdbcTemplate.update(sql, user.getName(), user.getCardno(), user.getBalance());
    }

    /**
     * 批量插入数据
     *
     * @param list
     */
    @Override
    public void insertBatch(List<Object[]> list) {
        String sql = "insert into t_user(name,cardno,balance) values(?,?,?)";
        int[] result = jdbcTemplate.batchUpdate(sql, list);
    }

    /**
     * namedParameterJdbcTemplate 插入一条数据
     * 采用Map做数据集
     *
     * @param map
     */
    @Override
    public void insertMap(Map<String, Object> map) {
        String sql = "insert into t_user(name,cardno,balance) values(:name,:cardno,:balance)";
        int result = namedParameterJdbcTemplate.update(sql, map);
    }


    /**
     * 张三扣钱
     */
    @Override
    public void subBalance(String acct) {
        jdbcTemplate.update("update t_user set balance=balance-200 where cardno='" + acct + "'");
    }

    /**
     * 李四加钱
     */
    @Override
    public void addBalance(String acct) {
        jdbcTemplate.update("update t_user set balance=balance+200 where cardno='" + acct + "'");
    }
}
